import $ from 'jquery'

export default class BaseControl {


  constructor(callBack,cancelCallback,errBack) {

    this.callBack=callBack;
    this.errorCallBack=errBack;
    this.cancelCallback=cancelCallback;
  }
  /**
   * 被添加到地图事件
   * @param map
   */
  onAdd(map){
    this.map=map;
  }

  /**
   * 从地图上移除事件
   */
  onRemove() {

  }

  /**
   * 启动功能
   */
  start() {

  }

  /**
   * 关闭功能
   */
  close() {
    this.clear();
  }

  /**
   * 清除绘制效果
   */
  clear() {
    this.clearMap();
    this.clearEvent();
  }

  /**
   * 清除地图内容
   */
  clearMap() {
    //清除选择图层
    if (this.map.getLayer('selectionSetDraw')) {
      this.map.removeLayer('selectionSetDraw');
    }
    if (this.map.getSource('selectionSetDraw')) {
      this.map.removeSource('selectionSetDraw');
    }
  }

  /**
   * 清除地图事件
   */
  clearEvent() {

  }

  /**
   * 根据className移除popup
   */
  clearPopup(){
    $("."+this.popupClassName).remove();
  }

  /**
   * 错误回调
   * @param e
   */
  error(e){
    if(this.errorCallBack){
      this.errorCallBack(e);
    }
  }
  /**
   * 错误回调
   * @param e
   */
  cancel(e){
    if(this.cancelCallback){
      this.cancelCallback(e);
    }
  }

  /**
   * 完成回调
   * @param e
   */
  finish(e){
    if(this.callBack){
      this.callBack(e);
    }
  }

  /**
   * 允许地图移动
   */
  enableViewMap() {
    this.map.dragPan.enable();
    this.map.touchZoomRotate.enable();
    this.map.doubleClickZoom.enable();
  }
  /**
   * 禁止地图移动
   */
  disableMap() {
    // //禁止拖拽地图
    this.map.dragPan.disable();
    // //禁止通过捏合屏幕进行缩放
    this.map.touchZoomRotate.disable();
    // //禁止双击缩放
    this.map.doubleClickZoom.disable();
  }

  /**
   * 手动停止
   */
  closeByHand(){

  }
  /**
   * 获取当前要素
   */
  getCurFeatures(){

  }

  _preventDefault(e) {
    e.preventDefault();
  }
}
